package top.college.service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

import top.college.dao.JDBC_ConnClose;
import top.college.dao.JDBC_SQL;
import top.college.model.ProfessorVO;

public class ProfessorRead {
	static String[] smt = { "순번", "교수번호", "교수이름", "담당 학과", "교수 연락처", "교수 주소", "교수 사무실", "등록일자" };
	static String add = null;
	
	protected static List<ProfessorVO> readProfessor() {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		List<ProfessorVO> result = new ArrayList<>();
		try {
			conn = JDBC_ConnClose.openDataBase();
			pstmt = conn.prepareStatement(JDBC_SQL.ProfessorSelectAll1SQL);
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			JDBC_ConnClose.closeDataBase(conn, pstmt, rs);
		}
	}
	protected static void ProfessorFindAll() {
		try {
			conn = Top_JDBC_Connection.openDataBase();
			pstmt = conn.prepareStatement(topsql.ProfessorSelectAll2SQL);
			rs = pstmt.executeQuery();
			sb.append(String.format("%-3s", smt[0])).append(String.format("%-5s", smt[1]))
			.append(String.format("%-8s", smt[2])).append(String.format("%-15s", smt[3]))
			.append(String.format("%-15s", smt[4])).append(String.format("%-20s", smt[5]))
			.append(String.format("%-15s", smt[6])).append(String.format("%-20s", smt[7])).append("\n");
			int count = 1;
			while ( rs.next() ) {
				sb.append(String.format("%-3s", count ++ )).append(String.format("%-5s", rs.getString( 1 )))
				.append(String.format("%-8s", rs.getString( 2 )))	.append(String.format("%-15s", rs.getString( 3 )))
				.append(String.format("%-15s", rs.getString( 4 ))).append(String.format("%-20s", rs.getString( 5 )))
				.append(String.format("%-15s", rs.getString( 6 ))).append(String.format("%-20s", rs.getString( 7 ))).append("\n");
			}
			System.out.println( sb.toString() );
			System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요.");
			System.in.read();
			System.in.read();
			System.out.println("교수 정보 검색 화면으로 이동합니다.");
			readProfessor();
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
		}
	}
	
	protected static void ProfessorFindNo() {
		while ( b ) {
			System.out.print("조회하실 교수번호를 입력하세요 : ");
			add = sc.next();
			try {
				conn = Top_JDBC_Connection.openDataBase();
				pstmt = conn.prepareStatement(topsql.ProfessorSelectNoSQL);
				pstmt.setString( 1,  add );
				rs = pstmt.executeQuery();
				if ( rs.next() ) {
					sb.append(String.format("%-3s", smt[0])).append(String.format("%-5s", smt[1]))
					.append(String.format("%-8s", smt[2])).append(String.format("%-15s", smt[3]))
					.append(String.format("%-15s", smt[4])).append(String.format("%-20s", smt[5]))
					.append(String.format("%-15s", smt[6])).append(String.format("%-20s", smt[7])).append("\n");
					int count = 1;
					do {
						sb.append(String.format("%-3s", count ++ )).append(String.format("%-5s", rs.getString( 1 )))
						.append(String.format("%-8s", rs.getString( 2 )))	.append(String.format("%-15s", rs.getString( 3 )))
						.append(String.format("%-15s", rs.getString( 4 ))).append(String.format("%-20s", rs.getString( 5 )))
						.append(String.format("%-15s", rs.getString( 6 ))).append(String.format("%-20s", rs.getString( 7 ))).append("\n");
					} while ( rs.next() );
					System.out.println( sb.toString() );
					System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요.");
					System.in.read();
					System.in.read();
					System.out.println("교수 정보 검색 화면으로 이동합니다.");
					readProfessor();
				} else { System.out.println("존재하지 않는 교수 번호입니다. 다시 확인해 주세요"); }
			} catch ( Exception e ) {
				e.printStackTrace();
			} finally {
				Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
			}
		}
	}
	
	protected static void ProfessorFindName() {
		while ( b ) {
			System.out.print("조회하실 교수이름을 입력하세요 : ");
			add = sc.next();
			try {
				conn = Top_JDBC_Connection.openDataBase();
				pstmt = conn.prepareStatement(topsql.ProfessorSelectNameSQL);
				pstmt.setString( 1,  add );
				rs = pstmt.executeQuery();
				if ( rs.next() ) {
					sb.append(String.format("%-3s", smt[0])).append(String.format("%-5s", smt[1]))
					.append(String.format("%-8s", smt[2])).append(String.format("%-15s", smt[3]))
					.append(String.format("%-15s", smt[4])).append(String.format("%-20s", smt[5]))
					.append(String.format("%-15s", smt[6])).append(String.format("%-20s", smt[7])).append("\n");
					int count = 1;
					do {
						sb.append(String.format("%-3s", count ++ )).append(String.format("%-5s", rs.getString( 1 )))
						.append(String.format("%-8s", rs.getString( 2 )))	.append(String.format("%-15s", rs.getString( 3 )))
						.append(String.format("%-15s", rs.getString( 4 ))).append(String.format("%-20s", rs.getString( 5 )))
						.append(String.format("%-15s", rs.getString( 6 ))).append(String.format("%-20s", rs.getString( 7 ))).append("\n");
					} while ( rs.next() );
					System.out.println( sb.toString() );
					System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요.");
					System.in.read();
					System.in.read();
					System.out.println("교수 정보 검색 화면으로 이동합니다.");
					readProfessor();
				} else { System.out.println("존재하지 않는 교수 이름입니다. 다시 확인해 주세요"); }
			} catch ( Exception e ) {
				e.printStackTrace();
			} finally {
				Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
			}
		}
	}
}